package com.jpowernode.view;

import java.util.Scanner;

import com.jpowernode.entity.Flower;
import com.jpowernode.service.FlowerService;

/** 
 * 在控制台展示内容(展示层)
 * 
 * 强调：展示层切记不要直接去操作数据，而是应该通过业务逻辑处理层来操作数据！
 */
public class Welcome {
	/**
	 * Scanner对象，用户获取用户输入数据使用
	 */
	private Scanner input = new Scanner(System.in);
	/**
	 * FlowerServiceImpl对象，方便调用该对象的成员方法使用
	 */
	FlowerService service = new FlowerService();
	/**
	 * 程序主界面的入口
	 */
	public void start() {
		while(true) {
			// 1.展示欢迎主界面
			System.out.println("============欢迎光临鲜花管理系统============");
			System.out.println("\t\t 1.查询所有");
			System.out.println("\t\t 2.修改鲜花");
			System.out.println("\t\t 3.删除鲜花");
			System.out.println("\t\t 4.新增鲜花");
			System.out.println("\t\t 5.退出系统");
			System.out.println("=====================================");
			// 2.获取用户选择的条目
			int index = input.nextInt();
			// 3.根据用户输入的内容，展示对用的功能
			switch (index) {
				case 1:
					// System.out.println("1.查询所有");	
					findAllFlower();
					break;
				case 2:
					// System.out.println("2.修改鲜花");
					updateFlower();
					break;
				case 3:
					// System.out.println("3.删除鲜花");	
					deleteFlower();
					break;
				case 4:
					// System.out.println("4.新增鲜花");
					addFlower();
					break;
				case 5: // 5.退出系统
					System.out.println("您已退出程序，欢迎下次光临！");
					System.exit(0); // 退出程序！
					break;
				default:
					System.out.println("您输入有误，请重新输入！");
					break;
			}
		}
	}
	/**
	 * 添加鲜花
	 */
	public void addFlower() {
		// 1.获取用户输入的鲜花信息
		System.out.print("请输入的鲜花编号：");
		int flowerId = input.nextInt();
		// 判断用户输入的鲜花id是否和库存中的相同
		if(service.getFlowerById(flowerId) != null) {
			System.out.println("您输入的鲜花编号已经存在，请重新输入！");
			return;
		}
		System.out.print("请输入的鲜花名称：");
		String flowerName = input.next();
		System.out.print("请输入的销售数量：");
		int flowerCount = input.nextInt();
		System.out.print("请输入的鲜花价格：");
		double flowerPrice = input.nextDouble();
		System.out.print("请输入的销售日期(yyyy-MM-dd)：");
		String salesDate = input.next();
		System.out.print("请输入的销售员：");
		String salesman = input.next();
		System.out.print("请输入的备注：");
		String remark = input.next();
		// 2.判断是否执行添加操作
		System.out.print("您确定要添加吗？(Y/N)：");
		String isAdd = input.next();
		if(isAdd.equals("Y")) {
			// 执行鲜花添加操作
			Flower flower = new Flower(flowerId, flowerName, flowerCount, flowerPrice, salesDate, salesman, remark);
			service.insertFlowerByElement(flower);
			System.out.println("添加成功！");
		}
		
	}
	/**
	 * 根据id删除鲜花
	 */
	public void deleteFlower() {
		// 1.提示并获取用户输入的编号信息
		System.out.print("请输入要删除的订单编号：");
		int id = input.nextInt();
		// 2.根据id获取鲜花对象。
		Flower flower = service.getFlowerById(id);
		// 3.判断flower对象是否为null
		if (flower == null) {
			System.out.println("对不起，没有您要删的订单编号！");
			return;
		}
		// 4.输出id对应鲜花对象的信息
		System.out.println("您要删除的订单信息如下：");
		System.out.println("编号\t鲜花名称\t\t鲜花数量\t价格\t销售日期\t\t销售员\t备注");
		System.out.println(flower.getId() + "\t" + flower.getFlowerName() + "\t" + flower.getFlowerCount() + "\t" + flower.getFlowerPrice() + "\t"
				+ flower.getSalesDate() + "\t" + flower.getSalesman() + "\t" + flower.getRemark());		// 5.判断是否执行修改操作
		System.out.print("您确定要删除吗？(Y/N)：");
		String isDelete = input.next();
		if(isDelete.equals("Y")) {
			// 5.根据flower删除在数组中元素
			if(service.deleteFlowerByElement(flower)) {
				System.out.println("删除成功！");
			}
			else {
				System.out.println("删除失败，3s后回到主界面！");
			}
		}
	}

	/**
	 * 修改更新鲜花
	 */
	public void updateFlower() {
		// 1.提示并获取用户输入的编号信息
		System.out.print("请输入修改编号：");
		int id = input.nextInt();
		// 2.根据id获取鲜花对象。
		Flower flower = service.getFlowerById(id);
		// 3.判断flower对象是否为null
		if(flower == null) {
			System.out.println("对不起，您要修改的订单号不存在！");
			return;
		}
		// 4.输出id对应鲜花对象的信息
		System.out.println("您要修改的订单信息如下：");
		System.out.println("编号\t鲜花名称\t\t鲜花数量\t价格\t销售日期\t\t销售员\t备注");
		System.out.println(flower.getId() + "\t" + flower.getFlowerName() + "\t" + flower.getFlowerCount() + "\t" + flower.getFlowerPrice() + "\t"
				+ flower.getSalesDate() + "\t" + flower.getSalesman() + "\t" + flower.getRemark());		// 5.执行修改鲜花信息操作
		System.out.print("请输入修改后的鲜花名称：");
		String flowerName = input.next();
		System.out.print("请输入修改后的销售数量：");
		int flowerCount = input.nextInt();
		System.out.print("请输入修改后的鲜花价格：");
		double flowerPrice = input.nextDouble();
		System.out.print("请输入修改后的销售日期(yyyy-MM-dd)：");
		String salesDate = input.next();
		System.out.print("请输入修改后的销售员：");
		String salesman = input.next();
		System.out.print("请输入修改后的备注：");
		String remark = input.next();
		// 6.判断是否执行修改操作
		System.out.print("您确定要修改吗？(Y/N)：");
		String flag = input.next();
		if(flag.equals("Y")) {
			flower.setFlowerName(flowerName);
			flower.setFlowerCount(flowerCount);
			flower.setFlowerPrice(flowerPrice);
			flower.setSalesDate(salesDate);
			flower.setSalesman(salesman);
			flower.setRemark(remark);
			System.out.println("修改成功！");
		}
		else {
			System.out.println("您已放弃修改，3s后回到主界面！");
		}
	}
	
	/**
	 * 查询所有鲜花
	 */
	public void findAllFlower() {
		// 1.获取所有的鲜花数据（Flower[]）
		Flower[] flowers = service.findAllFlower();
		// 2.输出鲜花数据展示在界面上
		System.out.println("编号\t鲜花名称\t\t鲜花数量\t价格\t销售日期\t\t销售员\t备注");
		for(int i = 0; i < service.size(); i++) {
			Flower flower = flowers[i];
			System.out.println(flower.getId() + "\t" + flower.getFlowerName() + "\t" + flower.getFlowerCount() + "\t" + flower.getFlowerPrice() + "\t"
					+ flower.getSalesDate() + "\t" + flower.getSalesman() + "\t" + flower.getRemark());
		}
	}
}
